From 616e1449fc4492035fb173df43271c31acfab545 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 17 Dec 2015 01:04:19 +0300 Subject: [PATCH] add more field to SerializedPackage --- src/cargo/core/package.rs | 26 ++++++++++++++++---------- tests/test_cargo_read_manifest.rs | 31 +++++++++++++++++++------------ 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/cargo/core/package.rs b/src/cargo/core/package.rs index c147a224c..4b5778ae3 100644 --- a/src/cargo/core/package.rs +++ b/src/cargo/core/package.rs @@ -1,3 +1,4 @@ +use std::collections::HashMap; use std::fmt::{self, Formatter}; use std::hash; use std::slice; @@ -24,25 +25,30 @@ pub struct Package { #[derive(RustcEncodable)] struct SerializedPackage<'a> { - name: String, - version: String, + name: &'a str, + version: &'a str, + id: &'a PackageId, + source: &'a SourceId, dependencies: &'a [Dependency], - targets: Vec, - manifest_path: String, + targets: &'a [Target], + features: &'a HashMap>, + manifest_path: &'a str, } impl Encodable for Package { fn encode(&self, s: &mut S) -> Result<(), S::Error> { - let manifest = self.manifest(); - let summary = manifest.summary(); + let summary = self.manifest.summary(); let package_id = summary.package_id(); SerializedPackage { - name: package_id.name().to_string(), - version: package_id.version().to_string(), + name: &package_id.name(), + version: &package_id.version().to_string(), + id: package_id, + source: summary.source_id(), dependencies: summary.dependencies(), - targets: manifest.targets().to_vec(), - manifest_path: self.manifest_path.display().to_string() + targets: &self.manifest.targets(), + features: summary.features(), + manifest_path: &self.manifest_path.display().to_string(), }.encode(s) } } diff --git a/tests/test_cargo_read_manifest.rs b/tests/test_cargo_read_manifest.rs index 68ecabac6..4dae20458 100644 --- a/tests/test_cargo_read_manifest.rs +++ b/tests/test_cargo_read_manifest.rs @@ -3,19 +3,26 @@ use hamcrest::{assert_that}; fn setup() {} +fn remove_all_whitespace(s: &str) -> String { + s.split_whitespace().collect() +} + fn read_manifest_output() -> String { - "\ -{\ - \"name\":\"foo\",\ - \"version\":\"0.5.0\",\ - \"dependencies\":[],\ - \"targets\":[{\ - \"kind\":[\"bin\"],\ - \"name\":\"foo\",\ - \"src_path\":\"src[..]foo.rs\"\ - }],\ - \"manifest_path\":\"[..]Cargo.toml\"\ -}".into() + remove_all_whitespace(r#" +{ + "name":"foo", + "version":"0.5.0", + "id":"foo[..]0.5.0[..](path+file://[..]/foo)", + "source":null, + "dependencies":[], + "targets":[{ + "kind":["bin"], + "name":"foo", + "src_path":"src[..]foo.rs" + }], + "features":{}, + "manifest_path":"[..]Cargo.toml" +}"#) } test!(cargo_read_manifest_path_to_cargo_toml_relative { -- 2.30.2